From 9c3802fc4b630c4ca404194b62b1178d51bc331f Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 23 May 2016 08:34:39 +0100 Subject: [PATCH] gdk: Provide safe fallback for creating GL contexts If the backend does not override GdkWindowClass.create_gl_context() then we should provide a fallback that gives an error, instead of crashing. https://bugzilla.gnome.org/show_bug.cgi?id=766782 --- gdk/gdkwindow.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 7625e478cc..d82f8ca285 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -2769,11 +2769,20 @@ gdk_window_get_paint_gl_context (GdkWindow *window, if (window->impl_window->gl_paint_context == NULL) { + GdkWindowImplClass *impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); + + if (impl_class->create_gl_context == NULL) + { + g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE, + _("The current backend does not support OpenGL")); + return NULL; + } + window->impl_window->gl_paint_context = - GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window->impl_window, - TRUE, - NULL, - &internal_error); + impl_class->create_gl_context (window->impl_window, + TRUE, + NULL, + &internal_error); } if (internal_error != NULL) -- 2.30.2